+2004-08-23 Matthias Clasen <mclasen@redhat.com>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a
+ user_time field.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_x11_window_set_user_time): Update
+ toplevel->user_time.
+ (show_window_internal): Update the user time when re-mapping a
+ toplevel window. (#150502, Elijah Newren)
+
2004-08-23 Matthias Clasen <mclasen@redhat.com>
Fix #150822, reported by Christian Persch
+2004-08-23 Matthias Clasen <mclasen@redhat.com>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a
+ user_time field.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_x11_window_set_user_time): Update
+ toplevel->user_time.
+ (show_window_internal): Update the user time when re-mapping a
+ toplevel window. (#150502, Elijah Newren)
+
2004-08-23 Matthias Clasen <mclasen@redhat.com>
Fix #150822, reported by Christian Persch
+2004-08-23 Matthias Clasen <mclasen@redhat.com>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a
+ user_time field.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_x11_window_set_user_time): Update
+ toplevel->user_time.
+ (show_window_internal): Update the user time when re-mapping a
+ toplevel window. (#150502, Elijah Newren)
+
2004-08-23 Matthias Clasen <mclasen@redhat.com>
Fix #150822, reported by Christian Persch
+2004-08-23 Matthias Clasen <mclasen@redhat.com>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a
+ user_time field.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_x11_window_set_user_time): Update
+ toplevel->user_time.
+ (show_window_internal): Update the user time when re-mapping a
+ toplevel window. (#150502, Elijah Newren)
+
2004-08-23 Matthias Clasen <mclasen@redhat.com>
Fix #150822, reported by Christian Persch
(GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN)
+/* Return whether time1 is considered later than time2 as far as xserver
+ * time is concerned. Accounts for wraparound.
+ */
+#define XSERVER_TIME_IS_LATER(time1, time2) \
+ ( (( time1 > time2 ) && ( time1 - time2 < ((guint32)-1)/2 )) || \
+ (( time1 < time2 ) && ( time2 - time1 > ((guint32)-1)/2 )) \
+ )
+
GType
gdk_window_impl_x11_get_type (void)
{
gboolean raise)
{
GdkWindowObject *private;
+ GdkDisplay *display;
+ GdkDisplayX11 *display_x11;
+ GdkToplevelX11 *toplevel;
g_return_if_fail (GDK_IS_WINDOW (window));
g_assert (GDK_WINDOW_IS_MAPPED (window));
+ if (GDK_WINDOW_IS_TOPLEVEL (window))
+ {
+ display = gdk_drawable_get_display (window);
+ display_x11 = GDK_DISPLAY_X11 (display);
+ toplevel = _gdk_x11_window_get_toplevel (window);
+
+ if (toplevel->user_time != 0 &&
+ display_x11->user_time != 0 &&
+ XSERVER_TIME_IS_LATER (display_x11->user_time, toplevel->user_time))
+ gdk_x11_window_set_user_time (window, display_x11->user_time);
+ }
+
if (impl->position_info.mapped)
{
gboolean unset_bg = !private->input_only &&
{
GdkDisplay *display;
GdkDisplayX11 *display_x11;
+ GdkToplevelX11 *toplevel;
glong timestamp_long = (glong)timestamp;
g_return_if_fail (window != NULL);
display = gdk_drawable_get_display (window);
display_x11 = GDK_DISPLAY_X11 (display);
+ toplevel = _gdk_x11_window_get_toplevel (window);
XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_USER_TIME"),
if (timestamp_long != GDK_CURRENT_TIME)
display_x11->user_time = timestamp_long;
+
+ toplevel->user_time = timestamp_long;
}
/**